home *** CD-ROM | disk | FTP | other *** search
-
- regc( 0, "TFACTOR" )
- regc4f( 3, %dirtcolor_r, %dirtcolor_g, %dirtcolor_b, 0.0 )
- regc4f( 4, %dirtsnow, %dirtgravel, %dirtmud, 0.0 )
- regc4f( 5, %daycolor_r, %daycolor_g, %daycolor_b, %daycolor_a )
- regc4f( 6, %ambient_r, %ambient_g, %ambient_b, %ambient_a )
-
- pshader("
-
- ps_1_4
-
- #include <cardef.h>
-
- #define DirtLevel c0.a
- #define DirtColor c3
- #define DirtType c4
- #define DayColor c5
-
- #define Diffuse v0.a
- #define SpotDiffuse v0
- #define Specular v1
- #define Fresnel v1.a
- #define Ambient c6
-
- def c7, 0, WATERDEEP, SHADOWSMUL, SOFTSHADOWS
- texld r1, t0 ;Dirt
- texld r2, t2 ;ColorMap
- texld r3, t3 ; Clouds
- texld r4, t4 ; Cubemap
-
- dp3_sat r1.rgb, DirtType, r1
-
- mul_sat r1, r1.b, DirtLevel ; dirtmask
-
- mad_x2_sat r2, r2.a, 1-r3.a, c7.a ; shadows + SOFTSHADOWS * (SHADOWSMUL=2)
-
- mul r4, r4, 1-r1
-
- phase
- texld r0, t0
- // r1 - dirtmask
- // r2 - shadows (przemnozone przez 2(SHADOWSMUL))
- // r3 - empty
- // r4 - Cubemap*dirtmask
-
- mul r3.rgb, r0_x2.a, 1-r1.b ; specularmask
- +mul_sat r1.a, r2.b, Diffuse
-
- lrp r0.rgb, r1.b, DirtColor, r0
- +mad_sat r4.a, Fresnel, r3.b, r0_bx2.a ; cubemap mask
-
- mul r4.rgb, r4, r4.a ; cubemap
- +mul_sat r3.a, r3.b, r2.b ; final specular mask
-
- mad_sat r3.rgb, r3.a, Specular, r4 ; specular+cubemap
- +mad_sat r1.a, r1.a, Ambient.b, Ambient.a ; final diffuse
-
- mad_sat r3, r0, r1.a, r3 ; color*diffuse+specular+cubemap
- #if VS_SPOTLIGHTS
- mul r1.rgb, r0, SpotDiffuse
- mad r0.rgb, r3, DayColor, r1
- +mov r0.a, c7.g
- #else
- mul r0.rgb, r3, DayColor
- +mov r0.a, c7.g
- #endif
- ")
-
-